package com.tanhua.dubbo.api.impl;


import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tanhua.dubbo.api.QuestionnaireReportApi;
import com.tanhua.dubbo.mapper.QuestionnaireReportMapper;
import com.tanhua.dubbo.pojo.QuestionnaireReport;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@DubboService(version = "1.0.0")
public class QuestionnaireReportApiImpl implements QuestionnaireReportApi {

    @Autowired
    private QuestionnaireReportMapper questionnaireReportMapper;

    @Override
    public String insert(QuestionnaireReport questionnaireReport) {
        this.questionnaireReportMapper.insert(questionnaireReport);
        return Convert.toStr(questionnaireReport.getId());
    }

    @Override
    public QuestionnaireReport queryById(Long id) {
        QueryWrapper<QuestionnaireReport> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return this.questionnaireReportMapper.selectOne(queryWrapper);
    }

    @Override
    public List<QuestionnaireReport> queryByResultType(String resultType) {
        QueryWrapper<QuestionnaireReport> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("result_type", resultType);
        return this.questionnaireReportMapper.selectList(queryWrapper);
    }

    @Override
    public QuestionnaireReport queryByUserId(Long userId, Long questionnaireId) {
        QueryWrapper<QuestionnaireReport> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId)
                .eq("questionnaire_id", questionnaireId)
                .orderByDesc("created").last("limit 1");
        return this.questionnaireReportMapper.selectOne(queryWrapper);
    }

    @Override
    public QuestionnaireReport queryByUserIdAndId(Long userId, Long id) {
        QueryWrapper<QuestionnaireReport> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id)
                .eq("user_id", userId)
                .orderByDesc("created").last("limit 1");
        return this.questionnaireReportMapper.selectOne(queryWrapper);

    }
}
